package com.gopay.common.util.xml.utils.validator;

import org.apache.commons.lang3.StringUtils;

import com.gopay.common.util.xml.xmlutils.message.Validator;

public class DefaultLengthValidator extends BaseValidator {
    @Override
    protected boolean validator(Object validator_, Object value) {
        if (null == value || "".equals(value)) {
            return true;
        }
        Validator validator = (Validator) validator_;
        if (!validatorMinAndMax(validator.getMinLength(), validator.getMaxLength(), value.toString())) {
            return false;
        }
        return true;
    }

    public boolean validatorMinAndMax(String min, String max, String value) {
        if (StringUtils.isBlank(min) && StringUtils.isBlank(max)) {
            return true;
        }
        if (StringUtils.isNotBlank(min)) {
            int intMin = Integer.parseInt(min);
            if (!validatorMin(intMin, value)) {
                return false;
            }
        }
        if (StringUtils.isNotBlank(max)) {
            int intMax = Integer.parseInt(max);
            if (!validatorMax(intMax, value)) {
                return false;
            }
        }
        return true;
    }

    private boolean validatorMin(int min, String value) {
        if (StringUtils.isBlank(value)) {
            return true;
        }
        if (value.length() < min) {
            return false;
        }
        return true;
    }

    private boolean validatorMax(int max, String value) {
        if (StringUtils.isBlank(value)) {
            return true;
        }
        if (value.length() > max) {
            return false;
        }
        return true;
    }
}